AWS CLIでコマンドに’dry run’オプションを付けて使用してみた。
こんにちは、イムチェジョンです。
今回のブログではAWS CLIで--dry -run
オプションをつけてEC2を作成してみました。
アジェンダ
--dry -run
オプションの機能定義--dry -run
を実行- まとめ
1. --dry -run
オプションの機能定義
まず、下のコマンドを実行し、Amazon EC2を作成する作業に対する詳しいヘルプを表示します。
ヘルプには、入力パラメータ、使用可能なフィルター、出力に含まれる項目の説明、一般的な変形を入力する方法などを見れます。
$ aws ec2 run-instances help
私が探したいのは--dry -run
に対する情報なので、[OPTIONS]の部分で--dry -run
を探します。
OPTIONS --dry-run | --no-dry-run (boolean) Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRun-Operation . Otherwise, it is UnauthorizedOperation .
説明で見れるように--dry -run
オプションの機能は以下のように使われます。
- 実際にリクエストせずに作業に必要な権限があるかを確認してエラー応答を提供する
- 必要な権限がある場合、エラー応答は
DryRunOperation
になる - 必要な権限がない場合、
UnauthorizedOperation
エラーが表示される
- 必要な権限がある場合、エラー応答は
2. --dry -run
を実行
今回は実際に--dry -run
オプションを使ってみましょう。
下準備(EC2構築)
EC2は以下の設定で作成します。
AMI:Amazon Linux 2 AMI
インスタンスタイプ:t2.micro
セキュリティグループ:SSH 22
IAM ロール:EC2RoleIAM
キーペア : 既存キーペア
及び新しいキーペア
の中で選択
--dry -run
オプション実行
実際に実行してみましょう。
コマンドのインスタンスの情報は以下のように設定しました。
--image-id(AMI ID):ami-0a0de518b1fc4524c
--instance-type(インスタンスタイプ):t2.micro
コマンドを実行してみます。
$ aws ec2 run-instances --dry-run --image-id ami-0a0de518b1fc4524c --instance-type t2.micro An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message: n6bxSs-tabJec7mc28q7GITyi1XuzGCj7VVjucXaSYKqZWKter5K6Uox9e3-j9PylvUIgxudD0MEw7Sm91pY4DDfCAyy9Li0CHyU10eB-9PRh2gNqUKJqlTpqzOnXhrcfFiblkuT1FK4V6T0R8iBDS6fxcI3AunxUm5M0y8vSvG62dvyu3HZNJcORQcIoBfMMShqguE8ptgJG44aAR1Wh__V4CcBk_KqZiBSEdH8twnW3eZx3HVq7K4JspaxaNwCA_LA0azE_KVy1QDqmhNThZp-7koBp_PzW-tYFlUe1KRFxkxzhf-MRRr6YxJK_IB4z_fzK7si3LgidqU-TNdKQpHAXpKkMVBovXtt9JvXsUWhpsoq6SGZRc-IbbYeNlTJWN5h23D4jGMnykS6pENAAe_X4EoQynbrW0j9T9Iyvzsose_CZfiF8CKA2uL8uoWHQij_jkNQhvr-mHWOcexKBBGvxSkyNiO-FaokPicMqFIDJV4HLenv0MbzxDO6bzJJ7GFN-uCAgFYc_q8ksS10k0J8jpzuEKv8YA65iLxghSCksWWp2h08UfW268N_-FJI4R8tsbzJUs_A64-PJ0lel6hC1rIqM9xOI8r3PGIeEzkXl9dflvvvl757qdT_3DAqQbSHO1Kd20oEUPiOE58z6Ljwkf6sCDZHF23F92bJRydzfN0lu-_jyM5qfqcoTiI
結果でUnauthorizedOperation
エラーが出ました。
上の定義にあるように必要な権限(RunInstances)がないのでエラーが出ています。
なので、IAMロールを確認する必要がありますね。
IAMの設定
IAMロールにEC2を作成するポリシーがありませんでした。
なので、EC2を作成できるようにポリシー作成し、IAMロールにアタッチしましょう。
ポリシー作成
まず、ポリシーを作成しましょう。
サービス:EC2
アクション:RunInstances
リソース:すべてのリソース
ポリシー名を入力して作成を完了します。
ポリシーのJSONを確認してみると、RunInstances
が追加されています。
IAMロールにアタッチ
作成したポリシーをIAMロールにアタッチします。
上で作成したポリシーを選択します。
アタッチされたのが確認できます。
IAM設定後、--dry -run
オプション実行
IAMの設定もできたので、もう一回実行をしてみましょう。
$ aws ec2 run-instances --dry-run --image-id ami-0a0de518b1fc4524c --instance-type t2.micro An error occurred (DryRunOperation) when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
今回はDryRunOperation
のエラーが表示されました。上の説明でわかるように必要な権限がある場合、このエラーが表示されます。
エラーの内容を見ると、リクエストは成功しましたが、DryRunフラグが設定されているので、EC2の作成はされてないのが確認できます。
3. まとめ
今回はインスタンシ作成の際、--dry -run
オプションを付けてみました。
--dry -run
オプションを使うことで権限の有無が確認できるので、有用なオプションだと思います。